This specification relates to managing network congestion. A communication network, including a packet-switched network such as an Internet Protocol (IP) based network, may experience congestion at one or more different places within the network. For example, several endpoints, such as networked computers, may overload a network by sending data packets to a specific endpoint at an aggregate rate in excess of a network bandwidth available to the specific endpoint. In such a scenario, data packets may be dropped by a router on the network when an aggregate of incoming data rates exceeds a threshold. When data packet loss occurs, an endpoint can lower a data transmission rate to a specific endpoint to mitigate network congestion.
Network protocols, e.g., Transmission Control Protocol (TCP) or Real-Time Media Flow Protocol (RTMFP), operating over a packet-switched network can implement congestion control in order to avoid overloading the network when sufficient capacity is not available. For example, TCP implementations use a congestion control algorithm based on packet loss after a congestion event occurs. A congestion control algorithm can increase or decrease a congestion window based on network congestion or a lack thereof. The congestion window can limit an outstanding amount of unacknowledged data packets. TCP implementations can use an additive increase-multiplicative decrease (AIMD) algorithm to adjust a congestion window. An AIMD algorithm can increase a congestion window linearly as successful acknowledgements arrive, and can decrease the congestion window, e.g., decrease the congestion window by half, when a packet loss occurs. RTMFP implementations can use different AIMD congestion responses.